<?php

namespace model;

	require_once("/view/LoginView.php");
	require_once('/view/UserInfo.php');

	class Loginmodel {
		/**
		 * @var $realUserName string
		 * @var $realPassword string
		 * @var $cookieUserName string
		 * @var $cookiePassword string
		 * @var $arrayusername string
		 * @var $arraypassword string
		 * @var passwordComparing string
		 */
		private static $realUserName = "Admin";
		private static $realPassword = "Password";
		private static $cookieUserName = "UserName";
		private static $cookiePassword = "Password";
		private static $arrayusername = "username";
		private static $arraypassword = "password";
		private static $passwordComparing = "e6c83b282aeb2e022844595721cc00bbda47cb24537c1779f9bb84f04039e1676e6ba8573e588da1052510e3aa0a32a9e55879ae22b0c2d62136fc0a3e85f8bb";

		/**
		 * @param $usrName string som tar användarens användarnamn.
		 * @param $passWord string som tar användarens lösenord.
		 * @throws exception om det inte finns ett användarnamn inmatat,
		 * 		   eller om det inte finns ett lösenord inmatat eller
		 *		   om användarnamnet eller lösenordet var fel.
		 */
		public function validateUsrInfo($usrName, $passWord) {
			$loginView = new \view\Loginview();

			if(empty($usrName)) {
				throw new \Exception("Användarnamn saknas");
			}
			else if(empty($passWord)) {
				throw new \Exception("Lösenord saknas");
			}
			else if($usrName != self::$realUserName || 
					$passWord != self::$realPassword) {
				throw new \Exception("Felaktigt användarnamn och/eller lösenord");
			}

			$loginView->setSessionLogin();
		}
		
		/**
		 * @param $usrName string som tar användarens användarnamn.
		 * @param $usrPWord string som tar användarens lösenord.
		 * Funktion som sparar användaruppgifter, och sparar
		 * lösenordet genom att kryptera det.
		 */
		public function saveUsrInfo($usrName, $usrPWord) {
			setcookie(self::$cookieUserName, $usrName, time()+3600*24*30);
			$encryptedPassWord = hash("sha512", $usrPWord);
			setcookie(self::$cookiePassword, $encryptedPassWord, time()+3600*24*30);
		}

		/**
		 * Funktion som tar bort en användarcookie genom att göra dem gamla.
		 */
		public function removeUsr() {
			setcookie(self::$cookieUserName, "", time()-3600);
			setcookie(self::$cookiePassword, "", time()-3600);
		}

		/**
		 * Funktion som hämtar cookie information och jämnför
		 * dem och ser om det är rätt.
		 */
		public function loginUserWithCookie() {
			$usrInfoView = new \view\UserInfo();
			$cookie = $usrInfoView->getCookieInfo();
			return $cookie[self::$arrayusername] == self::$realUserName
				&& $cookie[self::$arraypassword] == self::$passwordComparing;
		}
	}
?>